package facade;

import java.util.List;

import model.Club;

import facade.dto.ClubDTO;
import facade.dto.ClubSoDTO;


public interface ClubFacade {
	
	/**
	 * Get a club given its id
	 * @param id - {@link Long}
	 * @return a {@link ClubDTO}
	 */
	public ClubDTO get(Long id);
	
	/**
	 * Get all the clubs.
	 * @return a {@link List} of {@link ClubDTO}
	 */
	public List<ClubDTO> getAll();
	
	/**
	 * Complete a club given the beginning of the code or the name
	 * @param criteria - {@link ClubSoDTO}
	 * @return a {@link List} of {@link ClubDTO}
	 */
	public List<ClubDTO> completeClub(ClubSoDTO criteria);
	
	/**
	 * Create a new Club
	 * @param club - {@link ClubDTO}
	 * @return the new {@link Club}
	 */
	public ClubDTO createClub(ClubDTO club);
	
	/**
	 * Modify a club
	 * @param club - {@link ClubDTO}
	 * @return the modified club
	 */
	public ClubDTO modifyClub(ClubDTO club);
	
	/**
	 * Remove a club given its ID
	 * @param id - {@link Long}
	 */
	public void removeClub(Long id);
}
